#ifndef __DEVILCXXLOG_H
#define __DEVILCXXLOG_H


#include <android/log.h>
#include <libgen.h>


#ifdef __LOG_FULLPATH
#define __BASENAME(S) S
#else
//#define __BASENAME(S) basename(S)
#define __BASENAME(S) S
#endif

//#ifndef LOG_TAG
//#define LOG_TAG basename(__FILE__)
//#define LOG_TAG __FILE__
//#endif

#ifdef ANDROID
	#if ENABLE_LOG
		#define LOGI(FORMAT, ...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "%s:%d %s: " #FORMAT, \
										 __BASENAME(__FILE__), __LINE__, __FUNCTION__, ##__VA_ARGS__)
		#define LOGV(FORMAT, ...)  __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, "%s:%d %s: " #FORMAT, \
										 __BASENAME(__FILE__), __LINE__, __FUNCTION__, ##__VA_ARGS__)
		#define LOGW(FORMAT, ...)  __android_log_print(ANDROID_LOG_WARN, LOG_TAG, "%s:%d %s: " #FORMAT, \
										 __BASENAME(__FILE__), __LINE__, __FUNCTION__, ##__VA_ARGS__)
		#define LOGE(FORMAT, ...)  __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "%s:%d %s: " #FORMAT, \
										 __BASENAME(__FILE__), __LINE__, __FUNCTION__, ##__VA_ARGS__)
									 
	#elif ENABLE_SHORT_LOG
		#define LOGI(FORMAT, ...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
		#define LOGV(FORMAT, ...)  __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)
		#define LOGW(FORMAT, ...)  __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
		#define LOGE(FORMAT, ...)  __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
									 
	#else

		#define LOGI(FORMAT, ...)  
		#define LOGV(FORMAT, ...)  
		#define LOGW(FORMAT, ...) 
		#define LOGE(FORMAT, ...)  

	#endif
#endif

#endif
